package com.atguigu01.file.exer3;

import org.junit.Test;

import java.awt.*;
import java.io.File;

/**
 * @author 尚硅谷-宋红康
 * @create 16:53
        练习：
        遍历指定文件目录下的所有文件的名称，包括子文件目录中的文件。
        public void printFileName(File file)  //file可能是文件，也可能是文件目录


        拓展1：删除指定文件目录及其下的所有文件
        public void deleteDirectory(File file)  //file可能是文件，也可能是文件目录

        拓展2：计算指定文件目录占用空间的大小
        public long getDirectorySize(File file)  //file可能是文件，也可能是文件目录
 */
public class MoreExer {
    long l =0 ;
    public static void main(String[] args) {

    }

    /**
     *  练习：
     *         遍历指定文件目录下的所有文件的名称，包括子文件目录中的文件。
     *         public void printFileName(File file)  //file可能是文件，也可能是文件目录
     */

    @Test
        public void test1(){

            MoreExer moreExer = new MoreExer();

            //需要创建file对象 呜呜呜我忘记创建了，一直报错，我是笨蛋
            File file = new File("C:\\Users\\11921\\Desktop\\学习\\截图软件");
            moreExer.printFileName(file);

        }
    public void printFileName(File file){
        if (file ==null) return;

        if (file.isFile()) System.out.println(file.getName());
        else {
        File[] files = file.listFiles();
        for (File f : files){
            if (f.isFile()) System.out.println(f.getName());
            else printFileName(f);
        } }

    }


    /**
     * 拓展2：删除指定文件目录及其下的所有文件
     * public void deleteDirectory(File file)  //file可能是文件，也可能是文件目录
     */
    @Test
public void test3(){
    MoreExer moreExer = new MoreExer();

    //需要创建file对象 呜呜呜我忘记创建了，一直报错，我是笨蛋
    File file = new File("C:\\Users\\11921\\Desktop\\translucentTB");
    moreExer.deleteDirectory(file);
}
    public void deleteDirectory(File file){
        if (file ==null) {
            System.out.println("没有文件");
            return;
        }
        if (file.isFile()){
            boolean delete = file.delete();
            System.out.println("删除成功"+delete);
        }
        else {

            File[] files = file.listFiles();
            for (File f : files){
                if (f.isFile()) {
                    boolean delete = f.delete();
                    System.out.println("删除成功？"+delete);
                }
                else deleteDirectory(f);

            }

            //删除文件夹
            file.delete();
        }

    }

/**
 *    拓展2：计算指定文件目录占用空间的大小
 *         public long getDirectorySize(File file)  //file可能是文件，也可能是文件目录
 */

@Test
public void test4(){
    MoreExer moreExer = new MoreExer();
    File file = new File("C:\\Users\\11921\\Desktop\\生活");
    System.out.println(moreExer.getDirectorySize(file));
}
    public long getDirectorySize(File file){

        if (file ==null) {
            System.out.println("返回");
            return 0;
        }

        if (file.isFile()) l = l + file.length();
        else {
            File[] files = file.listFiles();
            for (File f : files){

                //需要注意，这个时候是要写f.length()而不是file.length()老是在这里搞错。
                if (f.isFile()) l += f.length();
                else getDirectorySize(f);
            } }
        return l;
}


}
